package com.hzw.saas.api.template;

import java.util.List;

import com.hzw.saas.api.template.bo.TemplateBO;
import com.hzw.saas.api.template.bo.TemplateTypeBO;
import com.hzw.saas.api.template.query.TemplateAddQuery;
import com.hzw.saas.api.template.query.TemplateUpdateQuery;

/**
 * @author zzl
 * @since 09/06/2021
 */
public interface ITemplateService {

    /**
     * 通过业务模板获取
     *
     * @param pid
     * @return
     */
    TemplateBO convertTemplate(String pid, String... bizParams);

    /**
     * @param type
     * @param bizParams
     * @return
     */
    TemplateBO convertTemplate(Integer type, String... bizParams);

    /**
     * 获取模板类型列表
     *
     * @return 所有模板类型列表
     */
    List<TemplateTypeBO> listTemplateTypes();

    /**
     * 获取模板类型
     *
     * @param type 模板类型
     * @return 模板类型信息，含模板变量
     */
    TemplateTypeBO getTemplateType(Integer type);

    /**
     * 获取模板列表
     *
     * @param type 模板类型
     * @param key 模板关键字
     * @return 所有模板列表
     */
    List<TemplateBO> listTemplates(Integer type, String key);

    /**
     * 获取模板
     *
     * @param pid 模板PID
     * @return 模板信息
     */
    TemplateBO getTemplate(String pid);

    /**
     * 增加模板
     *
     * @param query 模板参数
     * @return 已添加的模板信息
     */
    TemplateBO addTemplate(TemplateAddQuery query);

    /**
     * 更新模板
     *
     * @param query 模板参数，含pid
     * @return boolean
     */
    boolean updateTemplate(TemplateUpdateQuery query);

    /**
     * 删除模板
     *
     * @param pids 模板pid
     * @return boolean
     */
    boolean deleteTemplate(String... pids);

}
